在 Java 中,Map 是集合框架(Collection Framework)中的一種介面,用來儲存鍵值對(key-value pairs)的資料結構,使用key來存取value。 Map 介面中有多種具體的實作類別,如 HashMap、TreeMap 和 LinkedHashMap,可在java.util中找到。
Map 中的每一個元素都由兩部分組成:鍵(key)和值(value)。鍵(key)是唯一的,不能重複,但值(value)可以重複。當我們想要根據某個唯一值來存取資料時,Map 會是個好選擇。例如,如果想要儲存學生的學號和姓名,就可以把學號作為鍵,姓名作為值。
HashMap
:HashMap 使用哈希表來儲存元素,允許 null 鍵與 null 值。HashMap 不保證元素的順序。
TreeMap
:TreeMap 根據鍵的自然順序或自定義的比較器來儲存鍵值對,當遍歷 TreeMap 時,元素會按照鍵的順序排序。
LinkedHashMap
:LinkedHashMap 保持了鍵值對插入的順序,當遍歷 LinkedHashMap 時,元素會按照插入的順序進行排列。
Map<KeyType, ValueType> mapName = new MapImplementation<>();
// KeyType 是鍵的資料型態,例如 Integer、String 等。
// ValueType 是值的資料型態,例如 String、Double、CustomObject 等。
// mapName 是自訂的 Map 變數名稱。
// MapImplementation 是 Map 實作類型,例如 HashMap、TreeMap、LinkedHashMap。
Map<String, Integer> studentGrades = new HashMap<>();
studentGrades.put("1011254821", 85);
studentGrades.put("1011254808", 92);
studentGrades.put("1011254842", 76);
// 快速查詢某個學生的成績
System.out.println("1011254821的成績: " + studentGrades.get("1011254808"));
// output: 1011254821的成績: 92
Map<String, Integer> productPrices = new TreeMap<>();
productPrices.put("Apple", 25);
productPrices.put("Orange", 20);
productPrices.put("Banana", 10);
// 按名稱順序列出產品
for (String product : productPrices.keySet()) {
System.out.println(product + ": $" + productPrices.get(product));
}
// output: Apple: $25
// output: Banana: $10
// output: Orange: $20